/**
 * express应用的核心配置文件
 */
var createError = require('http-errors')  // 用于创建 HTTP 错误对象
var express = require('express')  // 用于创建 Express 应用
var path = require('path')  // 用于处理文件路径
var cookieParser = require('cookie-parser')  // 用于解析 Cookie
var logger = require('morgan')  // 用于记录 HTTP 请求日志
const colors = require('colors') // 命令行颜色化

/* 路由导入 */
var indexRouter = require('./routes/index')
var articlesRouter = require('./routes/articles') 
var usersRouter = require('./routes/users')
var cabinetsRouter = require('./routes/cabinets')
var sessionsRouter = require('./routes/sessions')
var ordercqsRouter = require('./routes/ordercqs')
var messageRouter = require('./routes/message')
var orderpaysRouter = require('./routes/orderpays')
var cabinetsGrpRouter = require('./routes/cabinetsGrp')
var usartRouter = require('./routes/usart')
var alarmRecordRouter = require('./routes/alarmRecord')

var app = express()  // 创建 Express 应用实例

/* 设置视图引擎 */
app.set('views', path.join(__dirname, 'views'))   // 设置视图文件所在的目录
app.set('view engine', 'jade')  // 设置视图引擎为 Jade（Pug 的前身）

/* 使用中间件 */
app.use(logger('dev'))  // 使用 morgan 记录请求日志，'dev' 格式输出简洁的日志
app.use(express.json()) // 解析请求体中的 JSON 数据
app.use(express.urlencoded({ extended: false })) // 解析请求体中的 URL 编码数据
app.use(cookieParser()) // 解析请求中的 Cookie
app.use(express.static(path.join(__dirname, 'public')))  // 托管静态资源文件（如 CSS、JS、图片）

/* 路由挂载 */
app.use('/', indexRouter)  // 将首页路由挂载到根路径
app.use('/articles', articlesRouter)  // 将文章相关路由挂载到 /articles 路径
app.use('/users', usersRouter)
app.use('/cabinets', cabinetsRouter)
app.use('/sessions', sessionsRouter)
app.use('/ordercqs', ordercqsRouter)
app.use('/msgs', messageRouter)
app.use('/ordpays', orderpaysRouter)
app.use("/cabGrps", cabinetsGrpRouter)
app.use("/usart", usartRouter);
app.use("/ar", alarmRecordRouter);

/* 捕获 404 错误并转发给错误处理中间件 */
app.use(function(req, res, next) {
  next(createError(404))
})

/* 错误处理中间件实现 */
app.use(function(err, req, res, next) {
  // 设置本地变量，仅在开发环境中提供错误详情
  res.locals.message = err.message
  // 错误对象（仅在开发环境中暴露）
  res.locals.error = req.app.get('env') === 'development' ? err : {}

  // 渲染错误页面
  res.status(err.status || 500)
  res.render('error') // 渲染 views/error.jade 模板
})

console.clear()
console.log()
console.log(colors.yellow('🚀  Express 服务成功启动！'))
console.log(colors.blue('🤖  http://localhost:3000'))
module.exports = app  // 导出 Express 应用实例，供其他模块使用
